#pragma once
#include <vector>    // 必须包含
#include <algorithm> // 包含std::find
#include <string>    // stringstream需要
#include <sstream>   // stringstream需要

#ifdef _WIN32
#include <windows.h> // OutputDebugString需要
#endif

namespace utils {
    struct usePoint {
        float x;
        float y;
    };
    
    template<class T>
    bool vecRemove(std::vector<T*> &vc, T* sp) {
        typename std::vector<T*>::iterator s = std::find(vc.begin(), vc.end(), sp);
        if(s != vc.end()) {
            vc.erase(s);
            return true;
        }
        return false;
    }

    /*template<typename T>
    void log(const T &v1) {
        std::stringstream ss;
        ss << v1;
        #ifdef _WIN32
        LPWSTR a = g_chartowchar2(ss.str().c_str()); // 需要实现此转换函数
        OutputDebugString(a);
        #endif
    }*/

    struct useSpSt {
        float x; 
        float y;
        int width; 
        int height; 
        float angle;
        float pivotX; 
        float pivotY;
    };
}
